/*
 * FSWUniCEUB - 2008
 * 
 * Este arquivo é de propriedade da Fábrica de Software do UniCEUB
 * 
 * Para mais informações entre em contato com a coordenação do
 * curso de Ciência da Computação da instituição.
 */

package br.uniceub.fsw.talentos.bo;

import br.uniceub.fsw.arquitetura.servico.exception.NegocioException;
import br.uniceub.fsw.talentos.dao.GrupoTrabalhoDAO;
import br.uniceub.fsw.talentos.dao.TalentoDAO;
import br.uniceub.fsw.talentos.vo.GrupoTrabalhoVO;
import br.uniceub.fsw.talentos.vo.TalentoVO;

/**
 * Business Object da entidade GrupoTrabalho. Essa classe é responsável por todos as
 * funcionalidades de negócio relacionadas à entidade.
 * 
 * @author Bruno Cesar Fernandes 2013498/7
 */
public class GrupoTrabalhoBO {

    GrupoTrabalhoDAO grupoTrabalhoDAO = new GrupoTrabalhoDAO();
    
    /**
     * Valida se já existe um registro do GrupoTrabalho no Banco de Dados como verificação para inserção.
     * 
     * @param grupoTrabalho grupoTrabalho a ser verificado.
     * @throws br.uniceub.fsw.arquitetura.servico.exception.RegraNegocioException caso o GrupoTrabalho 
     * informado não possua nome para a verificação ou já exista um GrupoTrabalho com o mesmo nome no banco de dados.
     */
    public void validarVOUnico(GrupoTrabalhoVO grupoTrabalho) throws NegocioException {
        
        if(grupoTrabalho.getNoGrupoTrabalho() == null || grupoTrabalho.getNoGrupoTrabalho().isEmpty())
            throw new NegocioException("Nome do grupo de trabalho não foi informado");
        
        GrupoTrabalhoVO grupoTrabalhoExemplo = new GrupoTrabalhoVO();
        grupoTrabalhoExemplo.setNoGrupoTrabalho(grupoTrabalho.getNoGrupoTrabalho());
        
        if(!grupoTrabalhoDAO.consultarPorNome(grupoTrabalhoExemplo.getNoGrupoTrabalho()).isEmpty())
            throw new NegocioException("Já existe um grupo de trabalho de nome " + grupoTrabalho.getNoGrupoTrabalho() +
                " na base de dados");
    }
    
    /**
     * Valida se já existe algum talento alocado no grupo de trabalho que será excluído.
     * 
     * @param grupoTrabalho grupoTrabalho a ser verificado.
     * @throws br.uniceub.fsw.arquitetura.servico.exception.RegraNegocioException caso o GrupoTrabalho 
     * informado possua talentos alocados.
     */    
    public void validarExclusao(GrupoTrabalhoVO grupoTrabalho) throws NegocioException {
        TalentoDAO talentoDAO = new TalentoDAO();
        TalentoVO talentoVO = new TalentoVO();
        
        talentoVO.setCdGrupoTrabalho(grupoTrabalho.getIdGrupoTrabalho());
        
        if(!talentoDAO.consultarPorExemplo(talentoVO).isEmpty())
            throw new NegocioException("Exclusão não permitida. Existem talentos alocados no grupo de trabalho");        
    }
}
